package com.example.demo.common;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.util.UUID;

public class SecurityUtil {

    /**
     * 加盐加密
     * @param password
     * @return
     */
    public static String encrypt(String password){
        //每次生成内容不同的,但长度固定的32位的盐值
        String salt= UUID.randomUUID().toString().replace("-","");
        //最终密码=md5(盐值+原始密码)
        String finalPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());
        return salt+finalPassword;
    }

    /**
     *
     * @param password  需要校验的密码
     * @param finalPassword  真正的密码
     * @return
     */
    public static boolean decrypt(String password,String finalPassword){
        //  非空校验
        if (!StringUtils.hasLength(password)||!StringUtils.hasLength(finalPassword)){
            return false;
        }
        if (finalPassword.length()!=64){
            return false;
        }

        //盐值
        String salt =finalPassword.substring(0,32);
        // 使用盐值+待确认的密码生成一个最终密码
        String securityPassword=DigestUtils.md5DigestAsHex((salt+password).getBytes());
        return (salt+securityPassword).equals(finalPassword);

    }

    public static void main(String[] args) {
        String password="123";


        System.out.println(SecurityUtil.decrypt("1233","e5c299e73c484ed3b79db42cc7a37f18a0aacb44aa052d8c36a8fa0f75403bbf"));
        System.out.println(SecurityUtil.decrypt("123","0f1e99e232914e498869d6b3cf9ef09a95eedd9ac4df8f9fdc1cdf6501e1123b"));
        System.out.println(SecurityUtil.decrypt("123","a13d4d95e4ff4c93b90514c4abeda5eb5671be8a6d143ca8daa431e88c9cca85"));


//        System.out.println(SecurityUtil.encrypt(password));
//        System.out.println(SecurityUtil.encrypt(password));
//        System.out.println(SecurityUtil.encrypt(password));

    }
}
